package com.micro.modual.service;

import com.micro.core.frame.service.BasicsService;
import com.micro.core.resp.RespJson;
import com.micro.core.resp.RespJsonData;
import com.micro.core.resp.RespJsonPageData;
import com.micro.modual.entity.CouponTemplate;
import com.micro.modual.model.bo.coupontemplate.CouponTemplateBO;
import com.micro.modual.model.dto.coupontemplate.CouponTemplateDetailDTO;
import com.micro.modual.model.dto.coupontemplate.CouponTemplateListDTO;
import com.micro.modual.model.dto.coupontemplate.CouponTemplateReceiveRecord;

import java.util.Map;


/**
*  <h1>优惠券模版表 接口</h1>
 * @author LevelCoder
 * @version V1.0.0
 * @email LevelCoder@126.com
 * @date 2020-08-04 00:11:10
 */
public interface CouponTemplateService extends BasicsService<CouponTemplate,Long>{

    /**
     * <h2>查找优惠券模版表 列表</h2>
     * @param params 列表查询请求对象
     * @return List<CouponTemplateListDTO> {@link CouponTemplateListDTO}s  优惠券模版表 列表返回对象
     */
    RespJsonPageData<CouponTemplateListDTO> findCouponTemplateList(Map<String, Object> params);

    /**
     * <h2>根据主键编号查看优惠券模版表详情</h2>
     * @param templateCode  优惠券模版表 模版编号
     * @return {@link CouponTemplateDetailDTO}  优惠券模版表 详情
     */
    RespJsonData<CouponTemplateDetailDTO> findCouponTemplateDetail(String templateCode);

    /**
     * <h2>查询优惠券模版领取记录</h2>
     * @param params 请求参数包含优惠券模版编号 分页参数
     * @return {@link CouponTemplateReceiveRecord} 优惠券领取记录
     */
    RespJsonPageData<CouponTemplateReceiveRecord> findCouponTemplateReceiveRecord(Map<String, Object> params);


    /**
     * <h2>新增优惠券模版表详情</h2>
     * @param couponTemplateBO {@link CouponTemplateBO} 优惠券模版表 新增/修改 请求对象
     * @return {@link RespJson} 返回结果基础类
     */
    RespJson addCouponTemplate(CouponTemplateBO couponTemplateBO);

    /**
     * <h2>修改优惠券模版表详情</h2>
     * @param couponTemplateBO  {@link CouponTemplateBO} 优惠券模版表 新增/修改 请求对象
     * @return {@link RespJson} 返回结果基础类
     */
    RespJson editCouponTemplate(CouponTemplateBO couponTemplateBO);

    /**
     * <h2>根据主键编号删除优惠券模版表信息</h2>
     * @param id  优惠券模版表 主键编号
     * @return  {@link RespJson} 返回结果基础类
     */
    RespJson deleteCouponTemplate(Long id);

    /**
     * <h2>校验优惠券模版名称是否存在</h2>
     * @param couponTempName 优惠券模版名称
     * @return {@link RespJson} 返回结果基础类
     */
    RespJson validataCouponTemplateNameExist(String couponTempName);
}
